android模拟器中,不能将文件拷贝到的system分区的原因,以及自动化解决方法 | 您所在的位置:网站首页 › android 文件拷贝 › android模拟器中,不能将文件拷贝到的system分区的原因,以及自动化解决方法 |
android 模拟器中,不能将文件拷贝到的 /system 分区的原因,以及自动 化解决方法
某些情况下,要调试的 apk 需要一些共享库,而这些库要放 /system/lib 下才能在运行时连接到。
但 android 模拟器每次启动后,系统分区 /system 是以只读方式挂载的,不能用向 /system 分区拷贝文 件。
事情到这里,有两种方法解决, 一是重新生成 system.img 文件 ,将自己的库也打包进去,但重新打 包 system.img 貌似需要 linux 环境,步骤也不少,而且每次修改共享库后都要重新打包,对于调试 应用程序来说,非常不划算。
另一种,方法是将 /system 分区修改为可以读写的 ,这个可以在 adb shell 中通过下面的命令实现:
#mount -o remount /dev/block/mtdblock0 /system
命令中 /dev/block/mtdblock0 表示 /system 分区实际设备,可通过 mount 查看。
即使把 /system 分区修改为可读写的,也不能向里面拷贝文件,拷贝时会报错:
failed to copy 'xxx' to '/system/xxx': Out of memory
这是因为 eclipse 启动模拟器时,系统分区的内容实际上是分配一块与 system.img 等大小的内存空 间,来作为系统分区的,所以会出现内存不足的提示。这个可以用 df 命令查看:
/dev: 63304K total, 0K used, 63304K available (block size 4096)
/mnt/asec: 63304K total, 0K used, 63304K available (block size 4096)
/system: 77568K total, 77568K used, 0K available (block size 4096)
/data: 65536K total, 26152K used, 39384K available (block size 4096)
/cache: 65536K total, 1156K used, 64380K available (block size 4096)
/mnt/sdcard: 64504K total, 1K used, 64502K available (block size 512)
/mnt/secure/asec: 64504K total, 1K used, 64502K available (block size 512)
关于 /system 分区内存不足也有两种解决方法,一是增大 /system 占用的内存 ,可以通过命令行启动 模拟器,设置内存大小:
emulator -avd [YOUR_AVD_NAME] -partition-size 512 这里设置内存大小为 512MB ,启动后, remount /system 分区为读写状态,就可以拷贝文件到 /system 分区了,如果要添加到 /system 分区的文件较大,可以采用这种方式,启动模拟器。
另一种方法是,删除 /system 分区中一些不用的文件,腾出空间 ,就可以向里面拷贝文件了,需要 拷贝的东西较小时,可以用这种方法。
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |